<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    // localStorage.setItem("名字","值")
    // removeItem("名字")
    // getItem("名字")

    // const cookie = {
    //     setItem(){},
    //     getItem(){},
    //     removeItem(){}
    // }
    // cookie.setItem()
    // cookie.getItem()
    // cookie.removeItem()


    const cookie = {
        setItem(key, value, ops={}){
            // 根据配置信息，决定是否需要配置路径
            const p = ops.path ? ";path="+ops.path : "";
            
            // 根据配置信息，决定是否需要配置有效期
            let e = "";
            if(ops.expires){
                const d = new Date()
                d.setDate(d.getDate() + ops.expires);
                e = ";expires="+d;
            }
            // 设置cookie
            document.cookie = `${key}=${value}${e}${p}`;
        },
        getItem(key){
            // 获取所有cookie后，将每组cookie分割出来
            const arr = document.cookie.split("; ");
            // 遍历分割出的每组cookie
            for(let i=0;i<arr.length;i++){
                // 再将每组cookie的名字和值分割出来，并判断名字是否和要获取的名字一致
                if(arr[i].split("=")[0] === key){
                    // 如果一致，返回当前分割出来的值
                    return arr[i].split("=")[1];
                }
            }
            // 如果遍历了所有cookie之后，都没有发现一致的名字，返回null
            return null;
        },
        removeItem(key, ops={}){
            // 删除其实就是修改有效期，有效期设置为过去的日期，就是删除
            ops.expires = -1;
            this.setItem(key, "", ops);
        }
    }
    

    // cookie.setItem("a", "10")
    // cookie.setItem("b", "20", {
    //     expires: 3
    // })
    // cookie.setItem("c", "30", {
    //     path: "/code"
    // })
    // cookie.setItem("d", "40", {
    //     path: "/code",
    //     expires: 7
    // })

    // cookie.removeItem("a")
    // cookie.removeItem("c",{
    //     path:"/code"
    // })

    console.log( cookie.getItem("a") )




    
</script>
</html>